/*
 * Wazuh databaseFeedManager
 * Copyright (C) 2015, Wazuh Inc.
 * January 11, 2024.
 *
 * This program is free software; you can redistribute it
 * and/or modify it under the terms of the GNU General Public
 * License (version 2) as published by the FSF - Free Software
 * Foundation.
 */
#ifndef _MOCK_FACTORYORCHESTRATOR_HPP
#define _MOCK_FACTORYORCHESTRATOR_HPP

#include "TrampolineOsDataCache.hpp"
#include "TrampolineRemediationDataCache.hpp"
#include "TrampolineScanContext.hpp"
#include "scanContext.hpp"
#include "shared_modules/utils/mocks/chainOfResponsabilityMock.h"
#include "gmock/gmock.h"
#include "gtest/gtest.h"

/**
 * @class MockFactoryOrchestrator
 *
 * @brief Mock class for simulating a factory orchestrator object.
 *
 * The `MockFactoryOrchestrator` class is designed to simulate the behavior of a factory
 * orchestrator for testing purposes. It provides mock implementations of methods and
 * allows you to set expectations on method calls and their return values for testing.
 *
 * This class is used in unit tests only to verify interactions with a content
 * register without actually performing real operations on it.
 */
class MockFactoryOrchestrator
{
public:
    MockFactoryOrchestrator() = default;
    virtual ~MockFactoryOrchestrator() = default;

    /**
     * @brief Mock method for handleRequest.
     *
     * @note This method is intended for testing purposes and does not perform any real action.
     */
    MOCK_METHOD(std::shared_ptr<MockAbstractHandler<std::shared_ptr<TrampolineTScanContext>>>, create, (), ());
};

#endif // _MOCK_FACTORYORCHESTRATOR_HPP
